// 泛型：定义的时候不确定，使用的时候可以传递过来这个类型

interface IRes<T> {
  code: number;
  message: string;
  data: T[]
}

// 后端返回的用户列表
const res1: IRes<{ name: string; age: number }> = {
  code: 0,
  message: '成功',
  data: [{
    name: 'zs',
    age: 18
  }, {
    name: 'ls',
    age: 19
  }]
}

// 后端返回的文章列表
const res2: IRes<{ title: string; content: string }> = {
  code: 0,
  message: '成功',
  data: [{
    title: '粗大事了',
    content: '86 期快毕业了'
  }, {
    title: '震惊',
    content: '平均工资破万'
  }]
}

// 泛型接口
interface IdFunc<Type> {
  id: () => Type
  ids: () => Type[]
}

// 字符串类型的单号
const o1: IdFunc<string> = {
  id: () => '8',
  ids: () => ['8', '7']
}

// 数字类型的单号
const o2: IdFunc<number> = {
  id: () => 8,
  ids: () => [8, 7]
}

const arr1: number[] = [1, 3, 5]

// !模拟默认的 interface Array
interface IArray<T> {
  // [K: number] 表示 key 是 number 类型的
  [K: number]: T
}
const arr2: IArray<number> = [1, 3, 5]

// arr2[0]
// arr2[1]
export { }